Computing and communication networks typically include devices, such as routers, switches or gateways, which transfer or switch data, such as packets, from one or more sources to one or more destinations. A packet is one form of data in which encapsulated data can be transmitted through a network based on control information that is stored in a header portion of the packet. A router is a switching device that can receive a packet and, based on the packet header, may forward the packet towards its final destination.
Existing routers include forwarding engines for receiving and forwarding incoming packets to their intended destinations. To forward incoming packets from an input port of the router to an appropriate output port, routers may perform data manipulation actions on the packet header. These data manipulation actions may be performed by a number of packet processing engines that may operate in parallel on a number of packets.
Packets received by a router may be received at one or more input ports and transmitted from the router through one or more output ports. Packets may belong to data traffic flows. The protocol requirements of the network may require that packets in the same traffic flow be transmitted from the router in the same order that they are received by the router. In other words, for certain traffic flows, it is undesirable for the router to reorder packets within the traffic flow. Packets from a same flow, however, may be transmitted to different ones of the parallel packet processing engines. Because the packet processing engines may have different throughputs, without a mechanism to maintain packet order, packets in a same flow may be undesirably reordered during processing by the packet processing engines.